package org.etnaframework.module.localcache;

/**
 * 定时全量更新任务 需要使用者实现的方法
 *
 * @author jasyaf
 * @since 2023-11-15
 */
public interface ILocalCacheCustomizer<T> {

    /**
     * 加载【全量】缓存数据的方法，如果返回null或抛异常，将被视作加载失败
     */
    T load() throws Throwable;

    /**
     * 异常处理器
     *
     * @param name 缓存名称
     * @param t    异常
     */
    void onError(String name, Throwable t);

    /**
     * 超时事件处理器
     *
     * @param name    缓存名称
     * @param startMs 任务开始时间（UNIX时间毫秒）
     */
    void onTimeout(String name, long startMs);
}
